#ifndef OBSTACLES_H
#define OBSTACLES_H

#include <OGRE/Ogre.h>
#include <OgreBullet/Collisions/OgreBulletCollisionsShape.h>
#include <OgreBullet/Dynamics/OgreBulletDynamicsRigidBody.h>

#include "StaticGameObject.h"
#include "ObstacleLoader.h"
#include "player.h"

/**
 * @brief The Obstacles class
 * this class is responsible for the obstacles in the labyrinth.
 */
class Obstacles : public StaticGameObject
{
public:
    /**
     * @brief Constructor of Obstacles
     * @param p_OgreSceneManager
     */
    Obstacles(Ogre::SceneManager* p_OgreSceneManager);

    /**
     * @brief Destructor of Obstacles
     * @param p_OgreSceneManager
     */
    ~Obstacles();

    /**
     * @brief Explode
     * @param p_Player: player in the scene
     * explodes the obstacle closest to the player
     */
    void Explode(Player* p_Player);

private:
    /**
     * @brief SetupScene
     * loads the obstacles and attaches it to the Object node
     */
	void SetupScene();

    /**
     * @brief GetExplosionParticle
     * @param p_ObstacleNode
     * gets the particle system for the explosion at the desired location
     */
    void GetExplosionParticle(Ogre::SceneNode* p_ObstacleNode);

    /**
     * @brief m_OgreSceneManager
     */
	Ogre::SceneManager* m_OgreSceneManager;

    /**
     * @brief m_ExplosionParticleSys
     */
    Ogre::ParticleSystem* m_ExplosionParticleSys;

};

#endif // OBSTACLES_H
